Intelligent automated assistants (or digital assistants) can provide a beneficial interface between human users and electronic devices. Such assistants can allow users to interact with devices or systems using natural language in spoken and/or text forms. For example, a user can provide natural language input containing a user request to a digital assistant operating on an electronic device. The digital assistant can interpret the user intent from the natural language input and operationalize the user intent into tasks. The tasks can then be performed by executing one or more services of the electronic device, and a relevant output responsive to the user request can be returned to the user.
Digital assistants can perform natural language processing to interpret the user intent from received natural language input. During natural language processing, a vocabulary can be used to assign semantic interpretations to one or more words or phrases in the user's natural language input. Because a vocabulary can typically contain millions of semantic interpretations for the many words and phrases of a language, it can be very large and require significant computational resources (e.g., memory and CPU) to run. As a result, conventional natural language processing solutions for digital assistants are typically implemented on server systems, which have abundant computational resources. In particular, client devices can send natural language input to a server system via a network to perform natural language processing using a vocabulary and the interpreted user intent and/or corresponding tasks can be returned to the user devices via the network. However, implementing natural language processing on server systems can restrict the use of digital assistants to only situations where a network connection is available. This can undesirably limit the accessibility of digital assistants.